package com.hjx.objectassert.model;

import com.hjx.objectassert.ObjectUtil;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;

import java.math.BigDecimal;
import java.util.Date;

/**
 * 分期明细
 * //@author Administrator
 *
 */
public class Installment {
	/**
	 * 
	 */
	//@JSONField(serialize=false,name="bill_id")
	private String billId;
	/**
	 * 消费记录ID
	 */
	//@Pattern(regexp = "[0-9a-z]{8}-[0-9a-z]{4}-[0-9a-z]{4}-[0-9a-z]{4}-[0-9a-z]{12}", message = "通过UUID生成方法")
	//@JSONField(name="shoppingsheet_id")
	private String shoppingsheetId;
	/**
	 * 记账日期.格式yyyy-MM-dd
	 */
//	//@Pattern(regexp = "^\\d{4}-\\d{2}-\\d{2}$|")
	//@JSONField(format="yyyy-MM-dd",name="post_date")
	private Date postDate;
	/**
	 * 交易时间.格式 yyyy-MM-dd HH:mm:ss
	 */
//	//@Pattern(regexp = "^\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2}$|")
	//@JSONField(format="yyyy-MM-dd HH:mm:ss",name="trans_date")
	private Date transDate;
	/**
	 * 分期描述
	 */
	//@Size(max = 256, message = "分期描述")
	//@JSONField(name="installment_desc")
	private String installmentDesc;
	/**
	 * 分期手续费描述
	 */
	//@Size(max = 256, message = "分期手续费描述")
	//@JSONField(name="handingfee_desc")
	private String handingfeeDesc;
	/**
	 * 分期转账手续费描述
	 */
	//@Size(max = 256, message = "分期转账手续费描述")
	//@JSONField(name="transferfee_desc")
	private String transferfeeDesc;
	/**
	 * 分期类型(CONSUME-消费;CASH-现金;BILL-账单）
	 */
	//@Pattern(regexp = "[A-Z]+", message = "分期类型(CONSUME-消费;CASH-现金;BILL-账单）")
	//@JSONField(name="installment_type")
	private String installmentType;
	/**
	 * 总分期数
	 */
	//@JSONField(name="total_month")
	private Integer totalMonth = 0;
	/**
	 * 当前分期数
	 */
	//@JSONField(name="current_month")
	private Integer currentMonth = 0;
	/**
	 * 币种.CNY-人民币；USD-美元
	 * 固定值：人民币-CNY/美元-USD/港币-HKD/欧元-EUR/英镑-GBP/日元-JPY/加南大元-CAD/瑞士法郎-CHF/澳大利亚元-AUD/新加坡元-SGD/韩元-KRW/泰铢-THB
	 */
	//@Pattern(regexp = "[A-Z]+", message = "币种")
	//@JSONField(name="currency_type")
	private String currencyType;
	/**
	 * 本期金额
	 */
	//@JSONField(name="amount_money")
	private BigDecimal amountMoney = null;
	/**
	 * 本期手续费
	 */
	//@JSONField(name="handing_fee")
	private BigDecimal handingFee = null;
	/**
	 * 转账手续费
	 */
	//@JSONField(name="transfer_fee")
	private BigDecimal transferFee = null;
	/**
	 *
	 * //@return
	 */
	public String getBillId() {
		return billId;
	}

	/**
	 *
	 * //@param billId
	 */
	public void setBillId(String billId) {
		this.billId = billId;
	}

	/**
	 * 消费记录ID
	 *
	 * //@return
	 */
	public String getShoppingsheetId() {
		return shoppingsheetId;
	}

	/**
	 * 消费记录ID
	 * 
	 * //@param shoppingsheetId
	 */
	public void setShoppingsheetId(String shoppingsheetId) {
		this.shoppingsheetId = shoppingsheetId;
	}

	/**
	 * 记账日期.格式yyyy-MM-dd
	 *
	 * //@return
	 */
	public Date getPostDate() {
		return postDate;
	}

	/**
	 * 记账日期.格式yyyy-MM-dd
	 * 
	 * //@param postDate
	 */
	public void setPostDate(Date postDate) {
		this.postDate = postDate;
	}

	/**
	 * 交易时间.格式 yyyy-MM-dd HH:mm:ss
	 *
	 * //@return
	 */
	public Date getTransDate() {
		return transDate;
	}

	/**
	 * 交易时间.格式 yyyy-MM-dd HH:mm:ss
	 * 
	 * //@param transDate
	 */
	public void setTransDate(Date transDate) {
		this.transDate = transDate;
	}

	/**
	 * 分期描述
	 *
	 * //@return
	 */
	public String getInstallmentDesc() {
		return installmentDesc;
	}

	/**
	 * 分期描述
	 * 
	 * //@param installmentDesc
	 */
	public void setInstallmentDesc(String installmentDesc) {
		this.installmentDesc = installmentDesc;
	}

	/**
	 * 分期手续费描述
	 *
	 * //@return
	 */
	public String getHandingfeeDesc() {
		return handingfeeDesc;
	}

	/**
	 * 分期手续费描述
	 * 
	 * //@param handingfeeDesc
	 */
	public void setHandingfeeDesc(String handingfeeDesc) {
		this.handingfeeDesc = handingfeeDesc;
	}

	/**
	 * 分期转账手续费描述
	 *
	 * //@return
	 */
	public String getTransferfeeDesc() {
		return transferfeeDesc;
	}

	/**
	 * 分期转账手续费描述
	 * 
	 * //@param transferfeeDesc
	 */
	public void setTransferfeeDesc(String transferfeeDesc) {
		this.transferfeeDesc = transferfeeDesc;
	}

	/**
	 * 分期类型(CONSUME-消费;CASH-现金;BILL-账单）
	 *
	 * //@return
	 */
	public String getInstallmentType() {
		return installmentType;
	}

	/**
	 * 分期类型(CONSUME-消费;CASH-现金;BILL-账单）
	 * 
	 * //@param installmentType
	 */
	public void setInstallmentType(String installmentType) {
		this.installmentType = installmentType;
	}

	/**
	 * 总分期数
	 *
	 * //@return
	 */
	public Integer getTotalMonth() {
		return totalMonth;
	}

	/**
	 * 总分期数
	 * 
	 * //@param totalMonth
	 */
	public void setTotalMonth(Integer totalMonth) {
		this.totalMonth = totalMonth;
	}

	/**
	 * 当前分期数
	 *
	 * //@return
	 */
	public Integer getCurrentMonth() {
		return currentMonth;
	}

	/**
	 * 当前分期数
	 * 
	 * //@param currentMonth
	 */
	public void setCurrentMonth(Integer currentMonth) {
		this.currentMonth = currentMonth;
	}

	/**
	 * 币种.CNY-人民币；USD-美元
	 *
	 * //@return
	 */
	public String getCurrencyType() {
		return currencyType;
	}

	/**
	 * 币种.CNY-人民币；USD-美元
	 * 
	 * //@param currencyType
	 */
	public void setCurrencyType(String currencyType) {
		this.currencyType = currencyType;
	}

	/**
	 * 本期金额
	 *
	 * //@return
	 */
	public BigDecimal getAmountMoney() {
		return amountMoney;
	}

	/**
	 * 本期金额
	 * 
	 * //@param amountMoney
	 */
	public void setAmountMoney(BigDecimal amountMoney) {
		this.amountMoney = amountMoney;
	}

	/**
	 * 本期手续费
	 *
	 * //@return
	 */
	public BigDecimal getHandingFee() {
		return handingFee;
	}

	/**
	 * 本期手续费
	 * 
	 * //@param handingFee
	 */
	public void setHandingFee(BigDecimal handingFee) {
		this.handingFee = handingFee;
	}

	/**
	 * 转账手续费
	 *
	 * //@return
	 */
	public BigDecimal getTransferFee() {
		return transferFee;
	}

	/**
	 * 转账手续费
	 * 
	 * //@param transferFee
	 */
	public void setTransferFee(BigDecimal transferFee) {
		this.transferFee = transferFee;
	}

	@Override
	public boolean equals(Object except) {
		return ObjectUtil.equals(this.getClass(), this, except);
	}

	@Override
	public String toString(){
		return ObjectUtil.toString(this.getClass(), this);
	}
}
